package com.srcptit.java.training.kienbd.btvn1;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.StringTokenizer;

public class Bai6ChuanhoaXau {        
        public static void main(String args[]) throws IOException {
            // Sử dụng Buffered đọc file.
            BufferedReader bufr = new BufferedReader(new FileReader("data6.txt"));
            
            try {
                // Kiểm tra file trống.
                if( bufr.ready()==false )    throw new myEx1();// Bắt lỗi file trống
                
                // Dữ liệu lấy từ file.                
                String dataout = bufr.readLine();
                
                // Kiểm tra Xâu rỗng.
                if( dataout==null )          throw new myEx2();//Bắt lỗi xâu rỗng. 
                
                ChuanhoaXau(dataout);
                
                // Kết thúc đọc file.
                bufr.close();
            }catch(myEx1 e){
                System.out.println("Error! File is Empty.");
            }catch(myEx2 e){
                System.out.println("Error! String is empty.");
            }catch(Exception e) {
                System.out.println("Error! Input again, please.");
            }            
       }
       static void ChuanhoaXau(String Question) throws IOException {
            // Sử dụng Buffered ghi file.
            BufferedWriter bufw = new BufferedWriter(new FileWriter("result6.txt"));
            
            // Bỏ dấu cách trắng ở hai đầu.
            Question.trim();
            
            // Chuyển Xâu thành Xâu ký tự thường.            
            Question = Question.toLowerCase();
            
            // Bỏ dấu cách thừa Use StringTokenizer.
            StringTokenizer stk = new StringTokenizer(Question," ",false);           
            String newString = new String();// Xâu sau khi chuẩn hóa.
            String str = new String();
            while(stk.hasMoreTokens()) {
                str = stk.nextToken();
                char[] ch = str.toCharArray();// Ép String -> mảng ký tự. 
                ch[0] = (char) (ch[0] - 32);// Viết hoa ký tự đầu tiên của một từ.
                str = String.valueOf(ch);
                newString += str + " ";
            }
            // Ghi kết quả vào file.
            bufw.write("Xâu đã được chuẩn hóa : ");
            bufw.write(newString);
            // Kết thúc phương thức ghi file.
            bufw.close();
        }
}

